package iagovsothello.ai.heuristics;

import iagovsothello.core.GameState;

public class HeuristicFunctionMobility implements HeuristicFunction {

	private static final long serialVersionUID = -2716600999471552404L;
	private static final String name = "HM";
	
	/**
	 * Funzione euristica che valuta lo stato attuale della partita in base a 3 parametri:
	 * 		1)il punteggio attuale del giocatore (ovvero il numero di pedine del suo colore in gioco)
	 * 		2)una valutazione della MOBILITA', ovvero il numero di mosse legali nell'attuale configurazione
	 * 		3)una valutazione della MOBILITA' POTENZIALE, ovvero il numero totale di caselle vuote adiacenti ad almeno una pedina appartenente al giocatore corrente
	 */
	@Override
	public int evaluate(GameState state, int player) 
	{
		return state.potentialMobility(GameState.getOpponent(player)) - state.potentialMobility(player) + state.mobility(player);
	}

	@Override
	public String getName() 
	{
		return name;
	}

	public String toString()
	{
		return name;
	}
}
